import json
import requests
from loguru import logger as log
from  setting import LOCAL_WEBHOOK_URL

def send_feishu_message(webhook_url = LOCAL_WEBHOOK_URL,  message=None):
    """
    发送通知消息到飞书群聊

    :param webhook_url: 飞书 Webhook URL（必须在飞书群里添加机器人）
    :param message: 发送的文本内容
    """
    headers = {"Content-Type": "application/json"}
    data = {
        "msg_type": "text",
        "content": {
            "text": message
        }
    }

    try:
        response = requests.post(webhook_url, headers=headers, data=json.dumps(data))
        response.raise_for_status()  # 如果请求失败，会抛出异常
        log.info('飞书消息发送成功')
    except requests.exceptions.RequestException as e:
        log.error('发送飞书消息失败')


def book_detail_date(search_param):
    """
    生成日期列表

    :param search_param:
        - 如果是字符串（如 '2025-06-05'）：返回从该日期到昨天的日期列表
        - 如果是数字（如 3）：返回最近几天的日期列表
    :return: 日期字符串列表，格式为 YYYY-MM-DD
    """
    from datetime import datetime, timedelta

    date_list = []
    today = datetime.now()
    yesterday = today - timedelta(days=1)

    # 判断参数类型
    if isinstance(search_param, str):
        # 字符串类型：从指定日期到昨天
        try:
            start_date = datetime.strptime(search_param, '%Y-%m-%d')

            # 如果开始日期在昨天之后，返回空列表
            if start_date > yesterday:
                return []

            # 生成从开始日期到昨天的日期列表
            current_date = start_date
            while current_date <= yesterday:
                date_list.append(current_date.strftime('%Y-%m-%d'))
                current_date += timedelta(days=1)

        except ValueError:
            log.error(f"日期格式错误: {search_param}，请使用 YYYY-MM-DD 格式")
            return []

    elif isinstance(search_param, int):
        # 数字类型：最近几天
        if search_param <= 0:
            return []

        # 生成最近几天的日期列表（不包括今天）
        for i in range(search_param):
            target_date = yesterday - timedelta(days=i)
            date_list.insert(0, target_date.strftime('%Y-%m-%d'))

    else:
        log.error(f"参数类型错误: {type(search_param)}，请传入字符串日期或数字")
        return []

    return date_list


if __name__ == '__main__':
    # send_feishu_message(message="message")

    print(book_detail_date('2025-06-05'))